package br.com.massai.controller.beans;

import java.io.Serializable;
import java.util.List;

import javax.inject.Inject;
import javax.inject.Named;

import org.omnifaces.cdi.ViewScoped;

import br.com.massai.model.dao.UnidadeMedidaDAO;
import br.com.massai.model.entity.UnidadeMedida;
import br.com.massai.view.utils.FacesUtil;

@Named
@ViewScoped
public class UnidadeMedidaBean implements Serializable {

	private static final long serialVersionUID = 4838389835463166579L;

	//PROPERTIES
	private UnidadeMedida unidadeMedida;

	//LISTS
	private List<UnidadeMedida> listaUnidadeMedida;

	//CDI
	@Inject private UnidadeMedidaDAO unidadeMedidaDAO; 

	public UnidadeMedidaBean() {
		unidadeMedida = new UnidadeMedida();
	}
	
	public void pesquisar(){
		try{
			listaUnidadeMedida = unidadeMedidaDAO.obterPorExemplo(unidadeMedida);
			if(listaUnidadeMedida == null || listaUnidadeMedida.isEmpty())
				FacesUtil.registrarMensagemInfo("Nenhum registro encontrado.");
		} catch(Exception e){
			FacesUtil.registrarMensagemErro(e.getMessage());
		}
	}
	
	public void salvar() throws Exception {
		try {
			unidadeMedidaDAO.salvar(unidadeMedida);
			unidadeMedida = new UnidadeMedida();
			pesquisar();

		} catch (Exception e) {
			FacesUtil.registrarMensagemErro(e.getMessage());
		}
	}
	
	public void remover(){
		try{
			unidadeMedida = unidadeMedidaDAO.obterPorId(Long.parseLong(FacesUtil.obterParamRequest("id")));
			unidadeMedidaDAO.excluir(unidadeMedida);
			unidadeMedida = new UnidadeMedida();
			pesquisar();
			
		} catch (Exception e) {
			FacesUtil.registrarMensagemErro(e.getMessage());
		}
	}
	
	public void atualizar(){
		try{
			unidadeMedida = unidadeMedidaDAO.obterPorId(Long.parseLong(FacesUtil.obterParamRequest("id")));

		} catch(Exception e){
			FacesUtil.registrarMensagemErro(e.getMessage());
		}
	}

	public UnidadeMedida getUnidadeMedida() {
		return unidadeMedida;
	}

	public void setUnidadeMedida(UnidadeMedida unidadeMedida) {
		this.unidadeMedida = unidadeMedida;
	}

	public List<UnidadeMedida> getListaUnidadeMedida() {
		return listaUnidadeMedida;
	}

	public void setListaUnidadeMedida(List<UnidadeMedida> listaUnidadeMedida) {
		this.listaUnidadeMedida = listaUnidadeMedida;
	}
}
